home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / GDebi / Cache.py < prev    next >
Text File  |  2009-09-23  |  3KB  |  102 lines

  1. # Copyright (c) 2005-2009 Canonical Ltd
  2. #
  3. # AUTHOR:
  4. # Michael Vogt <mvo@ubuntu.com>
  5. #
  6. # This file is part of GDebi
  7. #
  8. # GDebi is free software; you can redistribute it and/or
  9. # modify it under the terms of the GNU General Public License as published
  10. # by the Free Software Foundation; either version 2 of the License, or (at
  11. # your option) any later version.
  12. #
  13. # GDebi is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16. # General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU General Public License
  19. # along with GDebi; if not, write to the Free Software
  20. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  21. #
  22.  
  23. import warnings
  24. from warnings import warn
  25. warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
  26. import apt
  27.  
  28. class Cache(apt.Cache):
  29.     """ helper to provide some additonal functions """
  30.  
  31.     def __init__(self, progress=None, rootdir=None, memonly=False):
  32.         apt.Cache.__init__(self, progress, rootdir, memonly)
  33.         if progress:
  34.             self.op_progress = progress
  35.         else:
  36.             self.op_progress = apt.progress.OpProgress()
  37.  
  38.     def clear(self):
  39.         """ unmark all pkgs """
  40.         self._depcache.Init()
  41.  
  42.     def isVirtualPkg(self, pkgname):
  43.         """ this function returns true if pkgname is a virtual
  44.             pkg """
  45.         try:
  46.             virtual_pkg = self._cache[pkgname]
  47.         except KeyError:
  48.             return False
  49.  
  50.         if len(virtual_pkg.VersionList) == 0:
  51.             return True
  52.         return False
  53.  
  54.     def downloadable(self, pkg, useCandidate=True):
  55.         " check if the given pkg can be downloaded "
  56.         if useCandidate:
  57.             ver = self._depcache.GetCandidateVer(pkg._pkg)
  58.         else:
  59.             ver = pkg._pkg.CurrentVer
  60.         if ver == None:
  61.             return False
  62.         return ver.Downloadable
  63.  
  64.     def getProvidersFor(self, pkgname):
  65.         """
  66.         get providers for a pkgname, this is not limited to
  67.         pure virtual packages
  68.         """
  69.         providers = []
  70.         for pkg in self:
  71.             v = self._depcache.GetCandidateVer(pkg._pkg)
  72.             if v == None:
  73.                 continue
  74.             for p in v.ProvidesList:
  75.                 #print virtual_pkg
  76.                 #print p[0]
  77.                 if pkgname == p[0]:
  78.                     # we found a pkg that provides this virtual
  79.                     # pkg, check if the proivdes is any good
  80.                     providers.append(pkg)
  81.                     #cand = self._cache[pkg.name]
  82.                     #candver = self._cache._depcache.GetCandidateVer(cand._pkg)
  83.                     #instver = cand._pkg.CurrentVer
  84.                     #res = apt_pkg.CheckDep(candver.VerStr,oper,ver)
  85.                     #if res == True:
  86.                     #    self._dbg(1,"we can use %s" % pkg.name)
  87.                     #    or_found = True
  88.                     #    break
  89.         return providers
  90.  
  91.     def getProvidersForVirtual(self, virtual_pkg):
  92.         " get providers for a pure virtual package "
  93.         providers = []
  94.         try:
  95.             vp = self._cache[virtual_pkg]
  96.             if len(vp.VersionList) != 0:
  97.                 return providers
  98.         except IndexError:
  99.             return providers
  100.         return self.getProvidersFor(virtual_pkg)
  101.  
  102.